#pragma once
#include "struct.hpp"
#include "CPCBattleMercenary.hpp"
class CNpcHomun;
class CPC;
struct PACKET_ZC_NOTIFY_ACT;
class CSkillTypeInfo;
class CNpcMercenary;


class CPCBattle
{
public:
	enum enumMercenary_CallType
	{
		CREATE = 0x0,
		LOAD = 0x1,
	};

	/* this+0x0   */ //const CPCBattle::`vftable'
	/* this+0x4   */ CPCBattleMercenary m_Mercenary;
	/* this+0x450 */ CPC* m_pc;
	/* this+0x454 */ int m_enemyAID;
	/* this+0x458 */ int m_isReflectedMAGIC;
	/* this+0x45C */ unsigned short m_DoubleCastingSKID;
	/* this+0x460 */ OptionInfo m_optionInfo;
	/* this+0x4BC */ int m_myHomunID;
	/* this+0x4C0 */ HOMUN_DBINFO m_homunDBInfo;
	/* this+0x510 */ MERSOL_DBINFO m_merceDBInfo;
	/* this+0x53C */ int m_mercenaryID;
	/* this+0x540 */ short m_faith;
	/* this+0x542 */ short m_summonCount[0x3];
	/* this+0x548 */ mystd::map<int,AMOUNT_INFO> m_ATKPercentList;
	/* this+0x554 */ mystd::map<int,AMOUNT_INFO> m_DEFPercentList;
	/* this+0x560 */ mystd::map<int,AMOUNT_INFO> m_MATKPercentList;
	/* this+0x56C */ mystd::map<int,AMOUNT_INFO> m_MDEFPercentList;
	/* this+0x578 */ mystd::map<unsigned short,MSG_TYPE1_TWODWORD> m_pushSkillList;
	/* this+0x584 */ mystd::map<unsigned short,int> m_damagePercent_PROP[0x2];
	/* this+0x59C */ mystd::map<unsigned short,int> m_damagePercent_SKID[0x2];
	/* this+0x5B4 */ mystd::map<unsigned short,int> m_damagePercent_MON[0x2];
	/* this+0x5CC */ mystd::map<unsigned short,int> m_magicDamagePercent_MON[0x2];
	/* this+0x5E4 */ mystd::map<unsigned short,PropTM_Info> m_damageTM_PROP[0x2];
	/* this+0x5FC */ mystd::map<unsigned short,MSG_TYPE1_TWODWORD> m_autoSpellList[0x2];
	/* this+0x614 */ mystd::map<unsigned short,MSG_TYPE1_TWODWORD> m_autoSpell_MLEATKED[0x2];
	/* this+0x62C */ mystd::map<unsigned short,MSG_TYPE1_TWODWORD> m_autoSpell_MAGATKED[0x2];
	/* this+0x644 */ mystd::map<unsigned short,MSG_TYPE1_TWODWORD> m_autoSpell_MLEATK[0x2];
	/* this+0x65C */ mystd::map<unsigned short,MSG_TYPE1_TWODWORD> m_autoSpell_RANGEATK[0x2];
	/* this+0x674 */ mystd::map<unsigned short,unsigned short> m_badState_ArrowATK[0x2];
	/* this+0x68C */ mystd::map<unsigned short,unsigned short> m_badState_MLEATK[0x2];
	/* this+0x6A4 */ mystd::map<unsigned short,unsigned short> m_badState_MLEAttacked[0x2];
	/* this+0x6BC */ mystd::map<unsigned short,unsigned short> m_badState_MATK[0x2];
	/* this+0x6D4 */ mystd::map<unsigned short,unsigned short> m_badState_MAttacked[0x2];
	/* this+0x6EC */ mystd::map<unsigned short,int> m_healPercent_ITEM;
	/* this+0x6F8 */ mystd::map<unsigned short,int> m_dropItemOfRace_KILL[RACETYPE_LAST];
	/* this+0x770 */ mystd::map<unsigned short,mystd::map<unsigned short,int> > m_dropItemOfMonster_KILL;
	/* this+0x77C */ mystd::map<unsigned short,int> m_skillCastTimePercent;
	/* this+0x788 */ mystd::map<unsigned short,HEAL_REGULARLY_INFO> m_HPhealRegularlyAmountInfo;
	/* this+0x794 */ mystd::map<unsigned short,HEAL_REGULARLY_INFO> m_SPhealRegularlyAmountInfo;
	/* this+0x7A0 */ mystd::map<unsigned short,HEAL_REGULARLY_INFO> m_HPhealRegularlyPercentInfo;
	/* this+0x7AC */ mystd::map<unsigned short,HEAL_REGULARLY_INFO> m_SPhealRegularlyPercentInfo;
	/* this+0x7B8 */ mystd::map<unsigned char,mystd::list<AUTO_ACT_ITEMINFO> > m_autoActItemInfo;
	/* this+0x7C4 */ mystd::list<AUTO_ACT_ITEMSCRIPT> m_autoActItemScriptList;
	/* this+0x7D0 */ mystd::list<TARGET_ATTACKED_BUFF> m_targetAttackedBuff;
	/* this+0x7DC */ int m_damageMeleeTolerace[0xA];
	/* this+0x804 */ int m_damageMagicTolerace[0xA];
	/* this+0x82C */ mystd::map<unsigned long,mystd::list<SKILL_AUTOSPELL> > m_skillAutoSpellInfo;
	/* this+0x838 */ _SKILL_ACTIVE_INFO m_skillActiveInfo;
	/* this+0x858 */ mystd::map<unsigned long,mystd::list<SKILL_HANDICAP> > m_skillHandicapInfo;
	/* this+0x864 */ mystd::list<AUTOSPELL_MAGIC> m_autoSpellMagicList;

	//public: void CPCBattle::ReflectDamageEx(CCharacter*, int);
	public: CPCBattle::CPCBattle(void);
	public: virtual CPCBattle::~CPCBattle(void);
	public: void CPCBattle::Init(void);
	public: void CPCBattle::Reset(void);
	public: void CPCBattle::SetMyOwner(CPC* pc);
	public: void CPCBattle::CheckStateChange(void);
	public: void CPCBattle::CheckConsumedArrow(int ID);
	public: void CPCBattle::ActSkillToChar_ATK(int SKID, int AID, int SKInfo);
	public: void CPCBattle::OPSkillToCharacter(int SKID, int tarAID, int SKInfo);
	public: void CPCBattle::OPSkillToCharacter_AL_HEAL(const int in_SKID, const int in_skLevel, const int in_spCost, const MSG_TYPE4_FIVEDWORD* in_pData, const int in_TargetCHAID, const int in_TargetCHJob, const int in_TargetCHType, CCharacter* in_cpTargetCh);
	public: void CPCBattle::OPSkillToSelf(int SKID, int tarAID, int SKInfo);
	public: OptionInfo* CPCBattle::GetOptionInfo(void);
	public: int CPCBattle::GetPhysicalATKDamage(CCharacter* other, int isRangeATK, PACKET_ZC_NOTIFY_ACT* packet, bool& isConsumePlusArrow);
	public: int CPCBattle::GetMagicATKPower(CCharacter* other, bool isIncluingLevelRatio);
	public: int CPCBattle::GetDamagePercent(unsigned long itemclass, unsigned short scale);
	public: int CPCBattle::GetDamagePercent_SKID(int SKID, int who);
	public: int CPCBattle::GetHealPercent_ITEM(unsigned short ITID);
	public: mystd::map<unsigned short,int>& CPCBattle::GetDropItemList_KILL(int race);
	public: int CPCBattle::GetSKCastingTM(CSkillTypeInfo* SKTypeInfo, short skLevel, CCharacter* ch, int x, int y, int spCost);
	public: int CPCBattle::GetSoulLinkSKCastingTM(unsigned short SKID, short skLevel, int in_castTM);
	public: void CPCBattle::SetHealPercent_ITEM(unsigned short ITID, int percent);
	public: void CPCBattle::SetAutoSpellInfo(int SKID, int level, int percent, int who);
	public: void CPCBattle::SetAutoSpell_MLEATKED(unsigned short SKID, unsigned short level, int percent, unsigned short who);
	public: void CPCBattle::SetAutoSpell_MAGATKED(unsigned short SKID, unsigned short level, int percent, unsigned short who);
	public: void CPCBattle::SetAutoSpell_MLEATK(unsigned short SKID, unsigned short level, int percent, unsigned short who);
	public: void CPCBattle::SetAutoSpell_RANGEATK(unsigned short SKID, unsigned short level, int percent, unsigned short who);
	public: void CPCBattle::SetPushingSkill(int SKID, int range);
	public: void CPCBattle::SetATKPercentInfo(int SKID, unsigned long time, int val);
	public: void CPCBattle::SetDEFPercentInfo(int SKID, unsigned long time, int val);
	public: void CPCBattle::SetMATKPercentInfo(int SKID, unsigned long time, int val);
	public: void CPCBattle::SetMDEFPercentInfo(int SKID, unsigned long time, int val);
	public: void CPCBattle::SetDamagePercent_PROP(unsigned short property, int val, unsigned short who);
	public: void CPCBattle::SetDamagePercent_SKID(unsigned short SKID, int val, unsigned short who);
	public: void CPCBattle::SetDamagePercent_MON(unsigned short monJOB, int val, unsigned short who);
	public: void CPCBattle::SetMagicDamagePercent_MON(unsigned short monJOB, int val, unsigned short who);
	public: void CPCBattle::SetBadState_ArrowATK(int state, int val, unsigned short who);
	public: void CPCBattle::SetBadState_MLEATK(int state, int val, unsigned short who);
	public: void CPCBattle::SetBadState_MLEAttacked(int state, int val, unsigned short who);
	public: void CPCBattle::SetBadState_MATK(int state, int val, unsigned short who);
	public: void CPCBattle::SetBadState_MAttacked(int state, int val, unsigned short who);
	public: void CPCBattle::SetDropItemOfRace_KILL(int race, unsigned short ITID, int percent);
	public: void CPCBattle::SetDamage_PropTM(unsigned short ITID, unsigned short prop, int amount, int time, unsigned short who);
	public: void CPCBattle::ResetAutoSpellInfo(int SKID, int who);
	public: void CPCBattle::ResetPushingSkill(int SKID);
	public: void CPCBattle::ResetATKPercentInfo(int SKID);
	public: void CPCBattle::ResetDEFPercentInfo(int SKID);
	public: void CPCBattle::ResetMATKPercentInfo(int SKID);
	public: void CPCBattle::ResetMDEFPercentInfo(int SKID);
	public: HOOKED void CPCBattle::ModifyDamage_ATK(CCharacter* other, int& damage, int isRNGATK, int isSKATK, int isCRI);
	public: void CPCBattle::ModifyDamage_ATKED(CCharacter* other, int& damage, int isRNGATK, int type, int property, int SKID, int isArrowProperty);
	public: void CPCBattle::ModifyDamage_MATK(CCharacter* other, int& damage);
	public: void CPCBattle::ProcessEffect_ATK(CCharacter* other, int damage, int isMeleeATK, int isSKATK);
	public: void CPCBattle::ProcessEffectOnKill(CCharacter* other, int isMLEATK, unsigned short SKID);
	public: void CPCBattle::ApplyEffect_ATKED(CCharacter* other, int isMLEATK, int isMATK, unsigned short SKID, int in_Damage);
	public: int CPCBattle::ReflectMagic(CCharacter* other, SKILLATTACK_MSG* msg, int damage);
	public: int CPCBattle::IsImmuneMagic(CCharacter* other, int SKID);
	public: void CPCBattle::OnDoubleCasting(int SKID, int target, int level, int spCost);
	public: int CPCBattle::SetEffectiveByTarotCard(CCharacter* other);
	public: void CPCBattle::SetSkillCastTimePercent(unsigned short SKID, int percent);
	public: int CPCBattle::GetSkillCastTimePercent(unsigned short SKID);
	public: void CPCBattle::SetHPAmountTime(unsigned short itemID, unsigned long term, short amount);
	public: void CPCBattle::SetSPAmountTime(unsigned short itemID, unsigned long term, short amount);
	public: void CPCBattle::SetHPPercentTime(unsigned short itemID, unsigned long term, short amount);
	public: void CPCBattle::SetSPPercentTime(unsigned short itemID, unsigned long term, short amount);
	public: void CPCBattle::ProcessItemHealRegularly(void);
	public: void CPCBattle::SetSkillAutoSpell(unsigned long checkSKID, unsigned long percent, unsigned long autospellSKID, short autospellSKLV, short who);
	public: void CPCBattle::ResetSkillAutoSpell(unsigned long checkSKID, unsigned long percent, unsigned long autospellSKID, short autospellSKLV, short who);
	public: void CPCBattle::SetHomunDBInfo(HOMUN_DBINFO* info);
	public: CNpcHomun* CPCBattle::CallHomun(short state);
	public: void CPCBattle::RemoveHomun(void);
	public: void CPCBattle::SetMyHomunID(int ID);
	public: int CPCBattle::GetMyHomunID(void);
	public: HOMUN_DBINFO* CPCBattle::GetHomunDBInfo(void);
	public: CNpcHomun* CPCBattle::GetMyHomun(void);
	public: short CPCBattle::IsCallableHomun(void);
	public: int CPCBattle::RestHomun(int isForce);
	public: void CPCBattle::EvolutionHomun(void);
	public: void CPCBattle::SetMerceDBInfo(MERSOL_DBINFO* info);
	public: MERSOL_DBINFO* CPCBattle::GetMerceDBInfo(void);
	public: void CPCBattle::SetDropItemOfMonster_Kill(unsigned short mon_id, unsigned short ITID, int percent);
	public: bool CPCBattle::GetDropItemOfMonster_Kill(unsigned short mon_id, mystd::map<unsigned short,int>& dropItemList);
	public: bool CPCBattle::MercenaryCall(const enum CPCBattle::enumMercenary_CallType in_CallType, const int in_Job);
	public: bool CPCBattle::MercenaryCall_Create(const int in_Job);
	public: bool CPCBattle::MercenaryCall_Load(void);
	public: void CPCBattle::Mercenary_Delete(const int in_reason);
	public: void CPCBattle::Mercenary_Release(const bool in_bDisconnect);
	public: void CPCBattle::MercenaryCall_Create_After(const int in_Job);
	public: void CPCBattle::MercenaryCall_Delete_After(const int in_reason);
	public: void CPCBattle::Mercenary_TYPICALJOBINFO_CHANGED(void);
	public: void CPCBattle::Mercenary_SaveToProxyDB(void);
	public: void CPCBattle::SetMercenaryID(const int in_ID);
	public: int CPCBattle::GetMercenaryID(void);
	public: short CPCBattle::GetFaith(void);
	public: short CPCBattle::GetSummonCount(short job);
	public: short CPCBattle::GetMerceType(short job);
	public: CNpcMercenary* CPCBattle::GetMercenary(void);
	public: int CPCBattle::GetEnemyAID(void);
	public: short CPCBattle::GetMercenaryJob(void);
	public: int CPCBattle::GetMercenary_Type(void);
	public: void CPCBattle::CheckSkillSpecialOption(unsigned long checkSKID, CCharacter* target, short xPos, short yPos);
	public: unsigned long CPCBattle::GetActivatedSkill(void);
	public: unsigned long CPCBattle::GetDeactivatedSkill(void);
	public: void CPCBattle::SetSkillActivate(unsigned long itemID, unsigned long checkSKID, unsigned long percent, unsigned long time);
	public: void CPCBattle::ResetSkillActivate(unsigned long itemID, unsigned long checkSKID, unsigned long percent, unsigned long time);
	public: void CPCBattle::AddState_SKID(short who, unsigned long SKID, short state, int percent);
	public: void CPCBattle::SubState_SKID(short who, unsigned long SKID, short state, int percent);
	public: void CPCBattle::SetAutoSpellMagic(unsigned long SKID, short level, short who, int percent);
	public: void CPCBattle::ResetAutoSpellMagic(unsigned long SKID, short level, short who, int percent);
	private: void CPCBattle::ReflectDamage(CCharacter* other, int damage);
	private: void CPCBattle::ProcessAutoSpell(CCharacter* other, int isMeleeATK);
	private: void CPCBattle::ProcessAutoSpell_ATKED(CCharacter* other, int isMLEATK, int isMAGATK);
	private: void CPCBattle::UseAutoSpell(unsigned short SKID, CCharacter* ch, short skillLv, MSGpar::CVar in_par);
	private: void CPCBattle::UseAutoSpellToGround(unsigned short SKID, short xPos, short yPos, short skillLv);
	private: void CPCBattle::CheckAutoSpellList(mystd::map<unsigned short,MSG_TYPE1_TWODWORD>* autoSpellList, CCharacter* target, int isPercentKeep);
	private: void CPCBattle::ProcessRegionSkill(int SKID, short range, CCharacter* exceptCH, int par1, int par2);
	private: int CPCBattle::PartySkill(int SKID, short range);
	private: void CPCBattle::CheckAutoActItem(unsigned char type);
	private: void CPCBattle::ProcessAutoActItemScript(void);
	private: void CPCBattle::AddAutoActItem(unsigned char type, unsigned long itemID, short percent, short time);
	private: void CPCBattle::SubAutoActItem(unsigned char type, unsigned long itemID, short percent, short time);
	private: void CPCBattle::AddAutoActItemScript(unsigned char type, unsigned long itemID, unsigned long time);
	private: void CPCBattle::SubAutoActItemScript(unsigned char type, unsigned long itemID);
	private: int CPCBattle::GetTotalHealRegularlyAmount(mystd::map<unsigned short,HEAL_REGULARLY_INFO>* infos);
	private: void CPCBattle::ProcessTargetAttackedBuff(CCharacter* other, unsigned short SKID);
	private: void CPCBattle::SetTargetAttackedBuff(unsigned long percent, short who, unsigned short buffType, unsigned long time, unsigned long value);
	private: void CPCBattle::ResetTargetAttackedBuff(unsigned long percent, short who, unsigned short buffType, unsigned long time, unsigned long value);
	private: void CPCBattle::ProcessSkillActivate(void);
	private: void CPCBattle::CheckSkillAutoSpell(unsigned long checkSKID, CCharacter* target, short xPos, short yPos);
	private: void CPCBattle::CheckSkillActivate(unsigned long checkSKID);
	private: void CPCBattle::CheckSkillHandicap(unsigned long checkSKID, CCharacter* target);
	private: void CPCBattle::CheckAutoSpellMagic(CCharacter* target);
	private: void CPCBattle::CheckPushingSkill(unsigned long checkSKID, CCharacter* target);
	private: int CPCBattle::SK_SM_Bash(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch);
	private: int CPCBattle::SK_TF_SprinkleSand(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch);
	private: int CPCBattle::SK_TF_ThrowStone(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch);
	private: void CPCBattle::SK_KN_ChargeATK(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch);
	private: void CPCBattle::SK_WZ_SightBlaster(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_BA_PangVoice(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch);
	private: int CPCBattle::SK_DC_WinkCharm(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch);
	private: int CPCBattle::SK_BS_Greed(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_PR_Redemtio(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_MO_KITranslation(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch);
	private: int CPCBattle::SK_MO_Balkyoung(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch);
	private: int CPCBattle::SK_RG_CloseConfine(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch);
	private: void CPCBattle::SK_SA_CreateConverter(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_SA_ElementalCHG(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch);
	private: int CPCBattle::SK_GS_Glittering(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_GS_Fling(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch);
	private: int CPCBattle::SK_GS_BullsEye(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch);
	private: int CPCBattle::SK_GS_MadnessCancel(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_GS_Adjustment(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_GS_Increasing(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_GS_MagicalBullet(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch);
	private: int CPCBattle::SK_GS_Cracker(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch);
	private: int CPCBattle::SK_GS_FullBuster(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg);
	private: void CPCBattle::SK_GS_SingleAction(MSG_TYPE4_FIVEDWORD* msg);
	private: void CPCBattle::SK_GS_SnakeEye(MSG_TYPE4_FIVEDWORD* msg);
	private: void CPCBattle::SK_NJ_TobidoUgu(MSG_TYPE4_FIVEDWORD* msg);
	private: void CPCBattle::SK_NJ_NinPou(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_GS_Disarm(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch);
	private: int CPCBattle::SK_GS_PiercingShot(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch);
	private: int CPCBattle::SK_GS_Desperado(MSG_TYPE4_FIVEDWORD* msg);
	private: void CPCBattle::SK_GS_GatlingFever(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_NJ_Syuriken(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch);
	private: int CPCBattle::SK_NJ_Kunai(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch);
	private: int CPCBattle::SK_NJ_ZenyNage(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch);
	private: void CPCBattle::SK_NJ_TatamiGaeshi(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_NJ_KasumiKiri(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch);
	private: void CPCBattle::SK_NJ_ShadowJump(MSG_TYPE5_SIXDWORD* msg);
	private: int CPCBattle::SK_NJ_KiriKage(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch);
	private: int CPCBattle::SK_NJ_Utsusemi(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_NJ_BunsinJyutsu(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_NJ_KaenSin(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_NJ_BakuenRyu(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch);
	private: int CPCBattle::SK_NJ_HyousenSou(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg);
	private: void CPCBattle::SK_NJ_SuiTon(MSG_TYPE5_SIXDWORD* msg);
	private: int CPCBattle::SK_NJ_HyouSyouRaku(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_NJ_Raigekisai(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_NJ_Nen(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_NJ_Issen(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch);
	private: int CPCBattle::SK_ALL_PARTYFLEE(MSG_TYPE4_FIVEDWORD* msg);
	private: int CPCBattle::SK_ALL_ANGEL_PROTECT(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch);
	private: int CPCBattle::ALL_SONKRAN(const MSG_TYPE4_FIVEDWORD& msg, CCharacter* ch);

private:
	static hook_method<void (CPCBattle::*)(void)> CPCBattle::_Init;
	static hook_method<void (CPCBattle::*)(void)> CPCBattle::_Reset;
	static hook_method<void (CPCBattle::*)(CPC* pc)> CPCBattle::_SetMyOwner;
	static hook_method<void (CPCBattle::*)(void)> CPCBattle::_CheckStateChange;
	static hook_method<void (CPCBattle::*)(int ID)> CPCBattle::_CheckConsumedArrow;
	static hook_method<void (CPCBattle::*)(int SKID, int AID, int SKInfo)> CPCBattle::_ActSkillToChar_ATK;
	static hook_method<void (CPCBattle::*)(int SKID, int tarAID, int SKInfo)> CPCBattle::_OPSkillToCharacter;
	static hook_method<void (CPCBattle::*)(const int in_SKID, const int in_skLevel, const int in_spCost, const MSG_TYPE4_FIVEDWORD* in_pData, const int in_TargetCHAID, const int in_TargetCHJob, const int in_TargetCHType, CCharacter* in_cpTargetCh)> CPCBattle::_OPSkillToCharacter_AL_HEAL;
	static hook_method<void (CPCBattle::*)(int SKID, int tarAID, int SKInfo)> CPCBattle::_OPSkillToSelf;
	static hook_method<OptionInfo* (CPCBattle::*)(void)> CPCBattle::_GetOptionInfo;
	static hook_method<int (CPCBattle::*)(CCharacter* other, int isRangeATK, PACKET_ZC_NOTIFY_ACT* packet, bool& isConsumePlusArrow)> CPCBattle::_GetPhysicalATKDamage;
	static hook_method<int (CPCBattle::*)(CCharacter* other, bool isIncluingLevelRatio)> CPCBattle::_GetMagicATKPower;
	static hook_method<int (CPCBattle::*)(unsigned long itemclass, unsigned short scale)> CPCBattle::_GetDamagePercent;
	static hook_method<int (CPCBattle::*)(int SKID, int who)> CPCBattle::_GetDamagePercent_SKID;
	static hook_method<int (CPCBattle::*)(unsigned short ITID)> CPCBattle::_GetHealPercent_ITEM;
	static hook_method<mystd::map<unsigned short,int>& (CPCBattle::*)(int race)> CPCBattle::_GetDropItemList_KILL;
	static hook_method<int (CPCBattle::*)(CSkillTypeInfo* SKTypeInfo, short skLevel, CCharacter* ch, int x, int y, int spCost)> CPCBattle::_GetSKCastingTM;
	static hook_method<int (CPCBattle::*)(unsigned short SKID, short skLevel, int in_castTM)> CPCBattle::_GetSoulLinkSKCastingTM;
	static hook_method<void (CPCBattle::*)(unsigned short ITID, int percent)> CPCBattle::_SetHealPercent_ITEM;
	static hook_method<void (CPCBattle::*)(int SKID, int level, int percent, int who)> CPCBattle::_SetAutoSpellInfo;
	static hook_method<void (CPCBattle::*)(unsigned short SKID, unsigned short level, int percent, unsigned short who)> CPCBattle::_SetAutoSpell_MLEATKED;
	static hook_method<void (CPCBattle::*)(unsigned short SKID, unsigned short level, int percent, unsigned short who)> CPCBattle::_SetAutoSpell_MAGATKED;
	static hook_method<void (CPCBattle::*)(unsigned short SKID, unsigned short level, int percent, unsigned short who)> CPCBattle::_SetAutoSpell_MLEATK;
	static hook_method<void (CPCBattle::*)(unsigned short SKID, unsigned short level, int percent, unsigned short who)> CPCBattle::_SetAutoSpell_RANGEATK;
	static hook_method<void (CPCBattle::*)(int SKID, int range)> CPCBattle::_SetPushingSkill;
	static hook_method<void (CPCBattle::*)(int SKID, unsigned long time, int val)> CPCBattle::_SetATKPercentInfo;
	static hook_method<void (CPCBattle::*)(int SKID, unsigned long time, int val)> CPCBattle::_SetDEFPercentInfo;
	static hook_method<void (CPCBattle::*)(int SKID, unsigned long time, int val)> CPCBattle::_SetMATKPercentInfo;
	static hook_method<void (CPCBattle::*)(int SKID, unsigned long time, int val)> CPCBattle::_SetMDEFPercentInfo;
	static hook_method<void (CPCBattle::*)(unsigned short property, int val, unsigned short who)> CPCBattle::_SetDamagePercent_PROP;
	static hook_method<void (CPCBattle::*)(unsigned short SKID, int val, unsigned short who)> CPCBattle::_SetDamagePercent_SKID;
	static hook_method<void (CPCBattle::*)(unsigned short monJOB, int val, unsigned short who)> CPCBattle::_SetDamagePercent_MON;
	static hook_method<void (CPCBattle::*)(unsigned short monJOB, int val, unsigned short who)> CPCBattle::_SetMagicDamagePercent_MON;
	static hook_method<void (CPCBattle::*)(int state, int val, unsigned short who)> CPCBattle::_SetBadState_ArrowATK;
	static hook_method<void (CPCBattle::*)(int state, int val, unsigned short who)> CPCBattle::_SetBadState_MLEATK;
	static hook_method<void (CPCBattle::*)(int state, int val, unsigned short who)> CPCBattle::_SetBadState_MLEAttacked;
	static hook_method<void (CPCBattle::*)(int state, int val, unsigned short who)> CPCBattle::_SetBadState_MATK;
	static hook_method<void (CPCBattle::*)(int state, int val, unsigned short who)> CPCBattle::_SetBadState_MAttacked;
	static hook_method<void (CPCBattle::*)(int race, unsigned short ITID, int percent)> CPCBattle::_SetDropItemOfRace_KILL;
	static hook_method<void (CPCBattle::*)(unsigned short ITID, unsigned short prop, int amount, int time, unsigned short who)> CPCBattle::_SetDamage_PropTM;
	static hook_method<void (CPCBattle::*)(int SKID, int who)> CPCBattle::_ResetAutoSpellInfo;
	static hook_method<void (CPCBattle::*)(int SKID)> CPCBattle::_ResetPushingSkill;
	static hook_method<void (CPCBattle::*)(int SKID)> CPCBattle::_ResetATKPercentInfo;
	static hook_method<void (CPCBattle::*)(int SKID)> CPCBattle::_ResetDEFPercentInfo;
	static hook_method<void (CPCBattle::*)(int SKID)> CPCBattle::_ResetMATKPercentInfo;
	static hook_method<void (CPCBattle::*)(int SKID)> CPCBattle::_ResetMDEFPercentInfo;
	static hook_method<void (CPCBattle::*)(CCharacter* other, int& damage, int isRNGATK, int isSKATK, int isCRI)> CPCBattle::_ModifyDamage_ATK;
	static hook_method<void (CPCBattle::*)(CCharacter* other, int& damage, int isRNGATK, int type, int property, int SKID, int isArrowProperty)> CPCBattle::_ModifyDamage_ATKED;
	static hook_method<void (CPCBattle::*)(CCharacter* other, int& damage)> CPCBattle::_ModifyDamage_MATK;
	static hook_method<void (CPCBattle::*)(CCharacter* other, int damage, int isMeleeATK, int isSKATK)> CPCBattle::_ProcessEffect_ATK;
	static hook_method<void (CPCBattle::*)(CCharacter* other, int isMLEATK, unsigned short SKID)> CPCBattle::_ProcessEffectOnKill;
	static hook_method<void (CPCBattle::*)(CCharacter* other, int isMLEATK, int isMATK, unsigned short SKID, int in_Damage)> CPCBattle::_ApplyEffect_ATKED;
	static hook_method<int (CPCBattle::*)(CCharacter* other, SKILLATTACK_MSG* msg, int damage)> CPCBattle::_ReflectMagic;
	static hook_method<int (CPCBattle::*)(CCharacter* other, int SKID)> CPCBattle::_IsImmuneMagic;
	static hook_method<void (CPCBattle::*)(int SKID, int target, int level, int spCost)> CPCBattle::_OnDoubleCasting;
	static hook_method<int (CPCBattle::*)(CCharacter* other)> CPCBattle::_SetEffectiveByTarotCard;
	static hook_method<void (CPCBattle::*)(unsigned short SKID, int percent)> CPCBattle::_SetSkillCastTimePercent;
	static hook_method<int (CPCBattle::*)(unsigned short SKID)> CPCBattle::_GetSkillCastTimePercent;
	static hook_method<void (CPCBattle::*)(unsigned short itemID, unsigned long term, short amount)> CPCBattle::_SetHPAmountTime;
	static hook_method<void (CPCBattle::*)(unsigned short itemID, unsigned long term, short amount)> CPCBattle::_SetSPAmountTime;
	static hook_method<void (CPCBattle::*)(unsigned short itemID, unsigned long term, short amount)> CPCBattle::_SetHPPercentTime;
	static hook_method<void (CPCBattle::*)(unsigned short itemID, unsigned long term, short amount)> CPCBattle::_SetSPPercentTime;
	static hook_method<void (CPCBattle::*)(void)> CPCBattle::_ProcessItemHealRegularly;
	static hook_method<void (CPCBattle::*)(unsigned long checkSKID, unsigned long percent, unsigned long autospellSKID, short autospellSKLV, short who)> CPCBattle::_SetSkillAutoSpell;
	static hook_method<void (CPCBattle::*)(unsigned long checkSKID, unsigned long percent, unsigned long autospellSKID, short autospellSKLV, short who)> CPCBattle::_ResetSkillAutoSpell;
	static hook_method<void (CPCBattle::*)(HOMUN_DBINFO* info)> CPCBattle::_SetHomunDBInfo;
	static hook_method<CNpcHomun* (CPCBattle::*)(short state)> CPCBattle::_CallHomun;
	static hook_method<void (CPCBattle::*)(void)> CPCBattle::_RemoveHomun;
	static hook_method<void (CPCBattle::*)(int ID)> CPCBattle::_SetMyHomunID;
	static hook_method<int (CPCBattle::*)(void)> CPCBattle::_GetMyHomunID;
	static hook_method<HOMUN_DBINFO* (CPCBattle::*)(void)> CPCBattle::_GetHomunDBInfo;
	static hook_method<CNpcHomun* (CPCBattle::*)(void)> CPCBattle::_GetMyHomun;
	static hook_method<short (CPCBattle::*)(void)> CPCBattle::_IsCallableHomun;
	static hook_method<int  (CPCBattle::*)(int isForce)> CPCBattle::_RestHomun;
	static hook_method<void (CPCBattle::*)(void)> CPCBattle::_EvolutionHomun;
	static hook_method<void (CPCBattle::*)(MERSOL_DBINFO* info)> CPCBattle::_SetMerceDBInfo;
	static hook_method<MERSOL_DBINFO* (CPCBattle::*)(void)> CPCBattle::_GetMerceDBInfo;
	static hook_method<void (CPCBattle::*)(unsigned short mon_id, unsigned short ITID, int percent)> CPCBattle::_SetDropItemOfMonster_Kill;
	static hook_method<bool (CPCBattle::*)(unsigned short mon_id, mystd::map<unsigned short,int>& dropItemList)> CPCBattle::_GetDropItemOfMonster_Kill;
	static hook_method<bool (CPCBattle::*)(const enum CPCBattle::enumMercenary_CallType in_CallType, const int in_Job)> CPCBattle::_MercenaryCall;
	static hook_method<bool (CPCBattle::*)(const int in_Job)> CPCBattle::_MercenaryCall_Create;
	static hook_method<bool (CPCBattle::*)(void)> CPCBattle::_MercenaryCall_Load;
	static hook_method<void (CPCBattle::*)(const int in_reason)> CPCBattle::_Mercenary_Delete;
	static hook_method<void (CPCBattle::*)(const bool in_bDisconnect)> CPCBattle::_Mercenary_Release;
	static hook_method<void (CPCBattle::*)(const int in_Job)> CPCBattle::_MercenaryCall_Create_After;
	static hook_method<void (CPCBattle::*)(const int in_reason)> CPCBattle::_MercenaryCall_Delete_After;
	static hook_method<void (CPCBattle::*)(void)> CPCBattle::_Mercenary_TYPICALJOBINFO_CHANGED;
	static hook_method<void (CPCBattle::*)(void)> CPCBattle::_Mercenary_SaveToProxyDB;
	static hook_method<void (CPCBattle::*)(const int in_ID)> CPCBattle::_SetMercenaryID;
	static hook_method<int (CPCBattle::*)(void)> CPCBattle::_GetMercenaryID;
	static hook_method<short (CPCBattle::*)(void)> CPCBattle::_GetFaith;
	static hook_method<short (CPCBattle::*)(short job)> CPCBattle::_GetSummonCount;
	static hook_method<short (CPCBattle::*)(short job)> CPCBattle::_GetMerceType;
	static hook_method<CNpcMercenary* (CPCBattle::*)(void)> CPCBattle::_GetMercenary;
	static hook_method<int (CPCBattle::*)(void)> CPCBattle::_GetEnemyAID;
	static hook_method<short (CPCBattle::*)(void)> CPCBattle::_GetMercenaryJob;
	static hook_method<int (CPCBattle::*)(void)> CPCBattle::_GetMercenary_Type;
	static hook_method<void (CPCBattle::*)(unsigned long checkSKID, CCharacter* target, short xPos, short yPos)> CPCBattle::_CheckSkillSpecialOption;
	static hook_method<unsigned long (CPCBattle::*)(void)> CPCBattle::_GetActivatedSkill;
	static hook_method<unsigned long (CPCBattle::*)(void)> CPCBattle::_GetDeactivatedSkill;
	static hook_method<void (CPCBattle::*)(unsigned long itemID, unsigned long checkSKID, unsigned long percent, unsigned long time)> CPCBattle::_SetSkillActivate;
	static hook_method<void (CPCBattle::*)(unsigned long itemID, unsigned long checkSKID, unsigned long percent, unsigned long time)> CPCBattle::_ResetSkillActivate;
	static hook_method<void (CPCBattle::*)(short who, unsigned long SKID, short state, int percent)> CPCBattle::_AddState_SKID;
	static hook_method<void (CPCBattle::*)(short who, unsigned long SKID, short state, int percent)> CPCBattle::_SubState_SKID;
	static hook_method<void (CPCBattle::*)(unsigned long SKID, short level, short who, int percent)> CPCBattle::_SetAutoSpellMagic;
	static hook_method<void (CPCBattle::*)(unsigned long SKID, short level, short who, int percent)> CPCBattle::_ResetAutoSpellMagic;
	static hook_method<void (CPCBattle::*)(CCharacter* other, int damage)> CPCBattle::_ReflectDamage;
	static hook_method<void (CPCBattle::*)(CCharacter* other, int isMeleeATK)> CPCBattle::_ProcessAutoSpell;
	static hook_method<void (CPCBattle::*)(CCharacter* other, int isMLEATK, int isMAGATK)> CPCBattle::_ProcessAutoSpell_ATKED;
	static hook_method<void (CPCBattle::*)(unsigned short SKID, CCharacter* ch, short skillLv, MSGpar::CVar in_par)> CPCBattle::_UseAutoSpell;
	static hook_method<void (CPCBattle::*)(unsigned short SKID, short xPos, short yPos, short skillLv)> CPCBattle::_UseAutoSpellToGround;
	static hook_method<void (CPCBattle::*)(mystd::map<unsigned short,MSG_TYPE1_TWODWORD>* autoSpellList, CCharacter* target, int isPercentKeep)> CPCBattle::_CheckAutoSpellList;
	static hook_method<void (CPCBattle::*)(int SKID, short range, CCharacter* exceptCH, int par1, int par2)> CPCBattle::_ProcessRegionSkill;
	static hook_method<int (CPCBattle::*)(int SKID, short range)> CPCBattle::_PartySkill;
	static hook_method<void (CPCBattle::*)(unsigned char type)> CPCBattle::_CheckAutoActItem;
	static hook_method<void (CPCBattle::*)(void)> CPCBattle::_ProcessAutoActItemScript;
	static hook_method<void (CPCBattle::*)(unsigned char type, unsigned long itemID, short percent, short time)> CPCBattle::_AddAutoActItem;
	static hook_method<void (CPCBattle::*)(unsigned char type, unsigned long itemID, short percent, short time)> CPCBattle::_SubAutoActItem;
	static hook_method<void (CPCBattle::*)(unsigned char type, unsigned long itemID, unsigned long time)> CPCBattle::_AddAutoActItemScript;
	static hook_method<void (CPCBattle::*)(unsigned char type, unsigned long itemID)> CPCBattle::_SubAutoActItemScript;
	static hook_method<int (CPCBattle::*)(mystd::map<unsigned short,HEAL_REGULARLY_INFO>* infos)> CPCBattle::_GetTotalHealRegularlyAmount;
	static hook_method<void (CPCBattle::*)(CCharacter* other, unsigned short SKID)> CPCBattle::_ProcessTargetAttackedBuff;
	static hook_method<void (CPCBattle::*)(unsigned long percent, short who, unsigned short buffType, unsigned long time, unsigned long value)> CPCBattle::_SetTargetAttackedBuff;
	static hook_method<void (CPCBattle::*)(unsigned long percent, short who, unsigned short buffType, unsigned long time, unsigned long value)> CPCBattle::_ResetTargetAttackedBuff;
	static hook_method<void (CPCBattle::*)(void)> CPCBattle::_ProcessSkillActivate;
	static hook_method<void (CPCBattle::*)(unsigned long checkSKID, CCharacter* target, short xPos, short yPos)> CPCBattle::_CheckSkillAutoSpell;
	static hook_method<void (CPCBattle::*)(unsigned long checkSKID)> CPCBattle::_CheckSkillActivate;
	static hook_method<void (CPCBattle::*)(unsigned long checkSKID, CCharacter* target)> CPCBattle::_CheckSkillHandicap;
	static hook_method<void (CPCBattle::*)(CCharacter* target)> CPCBattle::_CheckAutoSpellMagic;
	static hook_method<void (CPCBattle::*)(unsigned long checkSKID, CCharacter* target)> CPCBattle::_CheckPushingSkill;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch)> CPCBattle::_SK_SM_Bash;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch)> CPCBattle::_SK_TF_SprinkleSand;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch)> CPCBattle::_SK_TF_ThrowStone;
	static hook_method<void (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch)> CPCBattle::_SK_KN_ChargeATK;
	static hook_method<void (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_WZ_SightBlaster;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch)> CPCBattle::_SK_BA_PangVoice;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch)> CPCBattle::_SK_DC_WinkCharm;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_BS_Greed;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_PR_Redemtio;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch)> CPCBattle::_SK_MO_KITranslation;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch)> CPCBattle::_SK_MO_Balkyoung;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch)> CPCBattle::_SK_RG_CloseConfine;
	static hook_method<void (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_SA_CreateConverter;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch)> CPCBattle::_SK_SA_ElementalCHG;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_GS_Glittering;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch)> CPCBattle::_SK_GS_Fling;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch)> CPCBattle::_SK_GS_BullsEye;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_GS_MadnessCancel;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_GS_Adjustment;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_GS_Increasing;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch)> CPCBattle::_SK_GS_MagicalBullet;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch)> CPCBattle::_SK_GS_Cracker;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg)> CPCBattle::_SK_GS_FullBuster;
	static hook_method<void (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_GS_SingleAction;
	static hook_method<void (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_GS_SnakeEye;
	static hook_method<void (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_NJ_TobidoUgu;
	static hook_method<void (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_NJ_NinPou;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch)> CPCBattle::_SK_GS_Disarm;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch)> CPCBattle::_SK_GS_PiercingShot;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_GS_Desperado;
	static hook_method<void (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_GS_GatlingFever;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch)> CPCBattle::_SK_NJ_Syuriken;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch)> CPCBattle::_SK_NJ_Kunai;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch)> CPCBattle::_SK_NJ_ZenyNage;
	static hook_method<void (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_NJ_TatamiGaeshi;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch)> CPCBattle::_SK_NJ_KasumiKiri;
	static hook_method<void (CPCBattle::*)(MSG_TYPE5_SIXDWORD* msg)> CPCBattle::_SK_NJ_ShadowJump;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch)> CPCBattle::_SK_NJ_KiriKage;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_NJ_Utsusemi;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_NJ_BunsinJyutsu;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_NJ_KaenSin;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch)> CPCBattle::_SK_NJ_BakuenRyu;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg)> CPCBattle::_SK_NJ_HyousenSou;
	static hook_method<void (CPCBattle::*)(MSG_TYPE5_SIXDWORD* msg)> CPCBattle::_SK_NJ_SuiTon;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_NJ_HyouSyouRaku;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_NJ_Raigekisai;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_NJ_Nen;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, SKILLATTACK_MSG* skMsg, CCharacter* ch)> CPCBattle::_SK_NJ_Issen;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg)> CPCBattle::_SK_ALL_PARTYFLEE;
	static hook_method<int (CPCBattle::*)(MSG_TYPE4_FIVEDWORD* msg, CCharacter* ch)> CPCBattle::_SK_ALL_ANGEL_PROTECT;
	static hook_method<int (CPCBattle::*)(const MSG_TYPE4_FIVEDWORD& msg, CCharacter* ch)> CPCBattle::_ALL_SONKRAN;
};
